package com.threeox.commonlibrary.ui.view.pullrefresh;

import android.content.Context;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.GridView;

import com.threeox.commonlibrary.ui.view.inter.pullrefresh.IPullable;

/**
 *
 * @ClassName: PullToRefreshGridView
 *
 * @Description: Todo(可以上拉和下拉的GridView)
 *
 * @author 赵屈犇
 *
 * @date 创建时间:2016/12/21 17:55
 *
 * @version 1.0
 */
@SuppressWarnings("ResourceAsColor")
public class PullToRefreshGridView extends GridView implements IPullable {

	public PullToRefreshGridView(Context context) {
		this(context, null);
	}

	public PullToRefreshGridView(Context context, AttributeSet attrs) {
		this(context, attrs, 0);
	}

	public PullToRefreshGridView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		this.setCacheColorHint(android.R.color.transparent);
		this.setSelector(android.R.color.transparent);
		this.setGravity(Gravity.CENTER);
	}

	@Override
	public boolean isPullDown() {
		if (getChildAt(0) == null) {
			return true;
		}
		if (getCount() == 0) {
			// 没有item的时候也可以下拉刷新
			return true;
		} else if (getFirstVisiblePosition() == 0 && getChildAt(0).getTop() >= 0) {
			// 滑到顶部了
			return true;
		} else
			return false;
	}

	@Override
	public boolean isPullUp() {
		if (getCount() == 0) {
			// 没有item的时候也可以上拉加载
			return true;
		} else if (getLastVisiblePosition() == (getCount() - 1)) {
			// 滑到底部了
			if (getChildAt(getLastVisiblePosition() - getFirstVisiblePosition()) != null
					&& getChildAt(
							getLastVisiblePosition()
									- getFirstVisiblePosition()).getBottom() <= getMeasuredHeight())
				return true;
		}
		return false;
	}

}
